Software systems are known in the art for managing or controlling system resources to achieve a desired result. For example, Call Control processes may be configured within a telephony system for establishing, maintaining and terminating calls. Common examples of such processes include dialing and transfer. According to the present state of the art, a call control system may be divided into a number of components. Those components may be put into effect by a number of processes. A few examples of call control processes are an Originating Call Process and a Terminating Call Process. These two processes implement a phone call according to the two half-call model.
In order for a set of processes to properly implement the call control system, there must be a method of coordination between the processes. One method of coordination is the implementation of a message subsystem and mailboxes (one per process) into which messages are delivered for subsequent processing. In the example of an Originating Call Process, a DTMF keystroke would result in a Key Press Message, delivered to that process.
Due to the non-deterministic nature of process scheduling it is common that a number of messages are queued in a mailbox before the associated process is scheduled. The extent of message queuing is increased when the associated process is delayed, runs at a lower priority, or receives many messages at a particular time. As a result messages may not be delivered because the mailbox for a process is full. Although the occurrence is typically logged (for possible later resolution), the message is lost and system behaviour may be impacted. Unilaterally increasing mailbox size would waste resources while merely increasing the threshold at which messages are lost.
What is needed is a resource conservative method or apparatus, that reduces or eliminates lost messages.